home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / util / misc / Lgui.lha / LGUI / LGUI_Sources / File_Checker.e < prev    next >
Encoding:
Text File  |  1992-09-02  |  12.6 KB  |  499 lines

  1. OPT PREPROCESS,OSVERSION=39
  2.  
  3. MODULE 'icon', 'dos/dos', 'exec/memory', 'translator',
  4.        'intuition/intuition', 'workbench/startup', 'workbench/workbench'
  5.  
  6. ENUM ERR_NONE, ERR_STG, ERR_CHDV
  7.  
  8. RAISE ERR_STG IF String()=0
  9.  
  10. DEF z, vle, ld=0:PTR TO CHAR, lft=0:PTR TO CHAR, ycr=1500:PTR TO INT,
  11.     aslBuf[100]:STRING, trns=0:PTR TO CHAR
  12.  
  13. PROC main() HANDLE
  14. DEF fma=0:PTR TO LONG
  15. checkConfig()
  16. IF ((lft>=0) AND (lft<8))
  17. checkWordFile()
  18. ELSEIF ((lft>7) AND (lft<10))
  19. checkSpeechFile()
  20. ELSE
  21. checkTitles()
  22. ENDIF
  23. EXCEPT DO
  24. IF translatorbase THEN CloseLibrary(translatorbase)
  25. IF (fma:=AllocMem(8000000, 0))<>0 THEN FreeMem(fma, 8000000)
  26. CleanUp()
  27. ENDPROC
  28.  
  29. PROC checkConfig()
  30. DEF olddir, ckstg, argv:PTR TO LONG, rdargs, wbstartup:PTR TO wbstartup,
  31.     wbarg:PTR TO wbarg, ck=0:PTR TO CHAR, dobj:PTR TO diskobject, toolarray
  32. argv:=[0, 0, 0, 0]
  33. IF (iconbase:=OpenLibrary('icon.library', 37))<>0
  34. IF wbmessage=0
  35. IF rdargs:=ReadArgs('FILEDEVICE/K,LGUIFILETYPE/K,RANGE/K,TRANSLATE/K', argv, 0)
  36. IF ck:=StrCmp(UpperStr(argv[0]), 'DH0:', ALL)
  37. ld:=1
  38. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'WORK:', ALL)
  39. ld:=2
  40. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF0:', ALL)
  41. ld:=3
  42. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF1:', ALL)
  43. ld:=4
  44. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF2:', ALL)
  45. ld:=5
  46. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF3:', ALL)
  47. ld:=6
  48. ENDIF
  49. IF ck:=StrCmp(UpperStr(argv[1]), 'DS', ALL)
  50. lft:=0
  51. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'FS', ALL)
  52. lft:=1
  53. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'DN', ALL)
  54. lft:=2
  55. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'FN', ALL)
  56. lft:=3
  57. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'DA', ALL)
  58. lft:=4
  59. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'FA', ALL)
  60. lft:=5
  61. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'DV', ALL)
  62. lft:=6
  63. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'FV', ALL)
  64. lft:=7
  65. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'FNS', ALL)
  66. lft:=8
  67. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'FSS', ALL)
  68. lft:=9
  69. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'TITLES', ALL)
  70. lft:=10
  71. ENDIF
  72. IF argv[2]
  73. ycr:=Val(argv[2])
  74. IF ((ycr<1) OR (ycr>1500))
  75. ycr:=1500
  76. ENDIF
  77. ENDIF
  78. IF ck:=StrCmp(UpperStr(argv[3]), 'TRUE', ALL)
  79. trns:=1
  80. ENDIF
  81. FreeArgs(rdargs)
  82. ELSE
  83. errreq(' Incorrect ARGS Supplied', 'Default ARGS Used')
  84. ENDIF
  85. ELSE
  86. wbstartup:=wbmessage
  87. wbarg:=wbstartup.arglist
  88. FOR z:=0 TO wbstartup.numargs-1
  89. olddir:=-1
  90. IF wbarg.lock<>0 AND (wbarg.name[]<>0)
  91. olddir:=CurrentDir(wbarg.lock)
  92. ENDIF
  93. IF (wbarg.name[]<>0) AND (dobj:=GetDiskObject(wbarg.name))
  94. toolarray:=dobj.tooltypes
  95. IF ckstg:=FindToolType(toolarray, 'FILEDEVICE')
  96. IF MatchToolValue(ckstg, 'DH0:')
  97. ld:=1
  98. ELSEIF MatchToolValue(ckstg, 'WORK:')
  99. ld:=2
  100. ELSEIF MatchToolValue(ckstg, 'DF0:')
  101. ld:=3
  102. ELSEIF MatchToolValue(ckstg, 'DF1:')
  103. ld:=4
  104. ELSEIF MatchToolValue(ckstg, 'DF2:')
  105. ld:=5
  106. ELSEIF MatchToolValue(ckstg, 'DF3:')
  107. ld:=6
  108. ENDIF
  109. ENDIF
  110. IF ckstg:=FindToolType(toolarray, 'LGUIFILETYPE')
  111. IF MatchToolValue(ckstg, 'DS')
  112. lft:=0
  113. ELSEIF MatchToolValue(ckstg, 'FS')
  114. lft:=1
  115. ELSEIF MatchToolValue(ckstg, 'DN')
  116. lft:=2
  117. ELSEIF MatchToolValue(ckstg, 'FN')
  118. lft:=3
  119. ELSEIF MatchToolValue(ckstg, 'DA')
  120. lft:=4
  121. ELSEIF MatchToolValue(ckstg, 'FA')
  122. lft:=5
  123. ELSEIF MatchToolValue(ckstg, 'DV')
  124. lft:=6
  125. ELSEIF MatchToolValue(ckstg, 'FV')
  126. lft:=7
  127. ELSEIF MatchToolValue(ckstg, 'FNS')
  128. lft:=8
  129. ELSEIF MatchToolValue(ckstg, 'FSS')
  130. lft:=9
  131. ELSEIF MatchToolValue(ckstg, 'TITLES')
  132. lft:=10
  133. ENDIF
  134. ENDIF
  135. IF ckstg:=FindToolType(toolarray, 'RANGE')
  136. ycr:=Val(ckstg)
  137. IF ((ycr<1) OR (ycr>1500))
  138. ycr:=1500
  139. ENDIF
  140. ENDIF
  141. IF ckstg:=FindToolType(toolarray, 'TRANSLATE')
  142. IF MatchToolValue(ckstg, 'TRUE')
  143. trns:=1
  144. ENDIF
  145. ENDIF
  146. FreeDiskObject(dobj)
  147. ELSEIF wbarg.name[]=0
  148. errreq(' ICON Is The Wrong Type', 'Default ARGS Used')
  149. ELSE
  150. errreq(' Cannot Find DISKOBJECT', 'Default ARGS Used')
  151. ENDIF
  152. IF olddir<>-1
  153. CurrentDir(olddir)
  154. ENDIF
  155. wbarg++
  156. ENDFOR
  157. ENDIF
  158. IF iconbase<>0
  159. CloseLibrary(iconbase)
  160. ENDIF
  161. ELSE
  162. errreq(' Cannot Open Icon.Library', 'Default ARGS Used')
  163. ENDIF
  164. IF ld=0
  165. StrCopy(aslBuf, 'RAM:')
  166. ELSEIF ld=1
  167. StrCopy(aslBuf, 'DH0:')
  168. ELSEIF ld=2
  169. StrCopy(aslBuf, 'WORK:')
  170. ELSEIF ld=3
  171. StrCopy(aslBuf, 'DF0:')
  172. ELSEIF ld=4
  173. StrCopy(aslBuf, 'DF1:')
  174. ELSEIF ld=5
  175. StrCopy(aslBuf, 'DF2:')
  176. ELSEIF ld=6
  177. StrCopy(aslBuf, 'DF3:')
  178. ENDIF
  179. StrAdd(aslBuf, 'LanguageGUI/', ALL)
  180. ENDPROC
  181.  
  182. PROC errreq(title:PTR TO CHAR, text:PTR TO CHAR)
  183. EasyRequestArgs(0, [SIZEOF easystruct, 0, title, text, 'O.K']:easystruct, 0, 0)
  184. ENDPROC
  185.  
  186. PROC checkSpeechFile()
  187. DEF fh, nl:PTR TO INT, fl, chr:PTR TO CHAR, tmp=0:PTR TO CHAR,
  188.     pos=0:PTR TO CHAR, tstg:PTR TO CHAR, pstg:PTR TO CHAR, flname:PTR TO CHAR,
  189.     cnt=0:PTR TO CHAR, pc=0:PTR TO CHAR, lc=0:PTR TO CHAR, ccn=0:PTR TO CHAR,
  190.     frq=0:PTR TO CHAR, nsw:PTR TO CHAR, tlo=0:PTR TO CHAR
  191. chr:=String(4)
  192. StrCopy(chr, '    ', ALL)
  193. nsw:=String(4)
  194. StrCopy(nsw, '    ', ALL)
  195. tstg:=String(25)
  196. StrCopy(tstg, '                         ', ALL)
  197. pstg:=String(50)
  198. StrCopy(pstg, '                                                  ', ALL)
  199. flname:=String(100)
  200. StrCopy(flname, '                                                                                                    ', ALL)
  201. StrCopy(flname, aslBuf, ALL)
  202. IF lft=8
  203. StrAdd(flname, 'FNSpeech.Lgui', ALL)
  204. ELSEIF lft=9
  205. StrAdd(flname, 'FSSpeech.Lgui', ALL)
  206. ENDIF
  207. IF trns=1
  208. IF (translatorbase:=OpenLibrary('translator.library', 37))<>0
  209. tlo:=1
  210. ELSE
  211. WriteF('\nERROR: Translator.Library, V37 or Higher, was Not Found.\n')
  212. ENDIF
  213. ENDIF
  214. WriteF('\n*** SPEECH FILE - \s ***\n\n', flname)
  215. fl:=FileLength(flname)
  216. IF fl>21
  217. tmp:=NewM(fl, MEMF_PUBLIC OR MEMF_CLEAR)
  218. IF fh:=Open(flname, MODE_OLDFILE)
  219. nl:=Read(fh, tmp, fl)
  220. Close(fh)
  221. IF nl=fl
  222. IF Char(tmp)<>64
  223. WriteF('\nThe @ Character Is Missing.\n')
  224. Raise(ERR_CHDV)
  225. ELSE
  226. FOR z:=1 TO 4 DO chr[z]:=Char(tmp+z)
  227. frq:=Val(chr)
  228. IF ((frq<1) OR (frq>1500))
  229. WriteF('\nThe NUMBER OF SYLLABLE LINES You Have Declared Is Not In The Correct\nRange Of 1-1500.\n\nYou Have Incorrectly Declared: \d\n', frq)
  230. Raise(ERR_CHDV)
  231. ELSE
  232. pos:=6
  233. ENDIF
  234. ENDIF
  235. WHILE cnt<frq
  236. ccn:=0
  237. StrCopy(tstg, '                         ', ALL)
  238. StrCopy(pstg, '                                                  ', ALL)
  239. WHILE (vle:=Char(tmp+pos))<>10
  240. IF ccn>=25
  241. WriteF('\nSYLLABLE LINE \d Is More Than 25 Characters Long.\n', cnt+1)
  242. Raise(ERR_CHDV)
  243. ELSE
  244. IF vle>31
  245. tstg[ccn]:=vle
  246. INC pos
  247. INC ccn
  248. ELSE
  249. WriteF('\nSYLLABLE LINE \d Has An Invalid Character Inside It - Chr$(\d).\n\nPosition = \d\n\nN.B: Characters Below Chr$(32) Are Not Allowed.\n', cnt+1, vle, ccn+1)
  250. Raise(ERR_CHDV)
  251. ENDIF
  252. ENDIF
  253. ENDWHILE
  254. IF ((ccn=0) AND ((Char(tmp+pos))=10))
  255. WriteF('\nSYLLABLE LINE \d Is Not Valid.\n\nN.B: Empty Syllable Lines Are Not Allowed.\n', cnt+1)
  256. Raise(ERR_CHDV)
  257. ENDIF
  258. IF ((trns=1) AND (tlo=1))
  259. Translate(tstg, 25, pstg, 50)
  260. WriteF('\s\n', pstg)
  261. ENDIF
  262. INC cnt
  263. INC pos
  264. ENDWHILE
  265. IF Char(tmp+pos)=42
  266. pos:=pos+2
  267. cnt:=0
  268. ELSE
  269. WriteF('\nThe * End Marker Is Missing.\n')
  270. Raise(ERR_CHDV)
  271. ENDIF
  272. WriteF('\n\nChecking Syllable Assignments, etc....\n')
  273. WHILE ((Char(tmp+pos)=35) OR (Char(tmp+pos)=37))
  274. pc:=0
  275. FOR z:=1 TO 4 DO chr[z]:=Char(tmp+pos+z)
  276. vle:=Val(chr)
  277. lc:=vle
  278. IF ((lc>0) AND (lc<=Min(ycr, 1500)))
  279. pos:=pos+6
  280. ELSE
  281. WriteF('\nThe SPEAKING SENTENCE TO BE ACTIVATED (Position/Line: \d), (Value:\s),\nIs Not In YOUR Range Of 1-\d\n', cnt+1, chr, ycr)
  282. Raise(ERR_CHDV)
  283. ENDIF
  284. WHILE (Char(tmp+pos))<>42
  285. IF pc>=25
  286. WriteF('\nYou Have Declared More Than 25 SYLLABLE LINES TO USE.\n\nThe SPEAKING SENTENCE TO BE ACTIVATED Is:\s - Check Its SYLLABLE LINES.\n', chr)
  287. Raise(ERR_CHDV)
  288. ELSE
  289. FOR z:=0 TO 3 DO nsw[z]:=Char(tmp+pos+z)
  290. vle:=Val(nsw)
  291. IF ((vle>0) AND (vle<=Min(frq, 1500)))
  292. INC pc
  293. pos:=pos+4
  294. ELSE
  295. WriteF('\nYou Have An Invalid Value For One Of Your SYLLABLE LINES TO USE.\n\nThe SPEAKING SENTENCE TO BE ACTIVATED Is:\s.\n\nYour Invalid SYLLABLE LINE TO USE Is: \s  (At Number/Line Position: \d)\n', chr, nsw, pc+1)
  296. Raise(ERR_CHDV)
  297. ENDIF
  298. ENDIF
  299. ENDWHILE
  300. pos:=pos+2
  301. INC cnt
  302. ENDWHILE
  303. WriteF('\n....Checking Finished.\n')
  304. IF ((trns=1) AND (tlo=1))
  305. WriteF('\nN.B: Make sure the Length of any Translated (Phonetic) text line is\n     no longer than 25 Characters.')
  306. ENDIF
  307. ELSE
  308. WriteF('\nERROR: \s was only Partly Read.\n', flname)
  309. Raise(ERR_CHDV)
  310. ENDIF
  311. ELSE
  312. WriteF('\nERROR: \s was Not Opened.\n', flname)
  313. Raise(ERR_CHDV)
  314. ENDIF
  315. ELSEIF ((fl>=0) AND (fl<22))
  316. WriteF('\nERROR: \s was Too Small.\n', flname)
  317. Raise(ERR_CHDV)
  318. ELSE
  319. WriteF('\nERROR: \s was Not Found.\n', flname)
  320. Raise(ERR_CHDV)
  321. ENDIF
  322. IF tstg THEN DisposeLink(tstg)
  323. IF pstg THEN DisposeLink(pstg)
  324. IF chr THEN DisposeLink(chr)
  325. IF nsw THEN DisposeLink(nsw)
  326. IF flname THEN DisposeLink(flname)
  327. IF translatorbase<>0 THEN CloseLibrary(translatorbase)
  328. ENDPROC
  329.  
  330. PROC checkWordFile()
  331. DEF pos=0:PTR TO CHAR, cnt=0:PTR TO CHAR, fh, nl:PTR TO INT, fl,
  332.     chr:PTR TO CHAR, rnge=0:PTR TO INT, pcnt=0:PTR TO CHAR, tmp=0:PTR TO CHAR,
  333.     flname:PTR TO CHAR, nsw:PTR TO CHAR, ccnt=1:PTR TO CHAR
  334. chr:=String(4)
  335. StrCopy(chr, '    ', ALL)
  336. nsw:=String(4)
  337. StrCopy(nsw, '    ', ALL)
  338. flname:=String(100)
  339. StrCopy(flname, '                                                                                                    ', ALL)
  340. StrCopy(flname, aslBuf, ALL)
  341. IF lft=0
  342. StrAdd(flname, 'DSentences.Lgui', ALL)
  343. ELSEIF lft=1
  344. StrAdd(flname, 'FSentences.Lgui', ALL)
  345. ELSEIF lft=2
  346. StrAdd(flname, 'DNouns.Lgui', ALL)
  347. ELSEIF lft=3
  348. StrAdd(flname, 'FNouns.Lgui', ALL)
  349. ELSEIF lft=4
  350. StrAdd(flname, 'DAdjectives.Lgui', ALL)
  351. ELSEIF lft=5
  352. StrAdd(flname, 'FAdjectives.Lgui', ALL)
  353. ELSEIF lft=6
  354. StrAdd(flname, 'DVerbs.Lgui', ALL)
  355. ELSEIF lft=7
  356. StrAdd(flname, 'FVerbs.Lgui', ALL)
  357. ENDIF
  358. IF ((lft>=0) AND (lft<2))
  359. WriteF('\n*** SENTENCE FILE - \s ***\n\n', flname)
  360. ELSEIF ((lft>1) AND (lft<8))
  361. WriteF('\n*** WORD FILE - \s ***\n\n', flname)
  362. ENDIF
  363. fl:=FileLength(flname)
  364. IF fl>2067
  365. tmp:=NewM(fl, MEMF_PUBLIC OR MEMF_CLEAR)
  366. IF fh:=Open(flname, MODE_OLDFILE)
  367. nl:=Read(fh, tmp, fl)
  368. Close(fh)
  369. IF nl=fl
  370. REPEAT
  371. WriteF('\nChecking Category: \d\n', ccnt)
  372. IF Char(tmp+pos)<>64
  373. WriteF('\nThe @ character is missing from Category: \d\n', ccnt)
  374. Raise(ERR_CHDV)
  375. ELSE
  376. FOR z:=1 TO 4 DO chr[z]:=Char(tmp+pos+z)
  377. vle:=Val(chr)
  378. IF vle<=0
  379. WriteF('\nThe NUMBER OF DECLARED SENTENCE LINES in Category: \d  is invalid.\n', ccnt)
  380. Raise(ERR_CHDV)
  381. ENDIF
  382. IF ((lft>=0) AND (lft<2))
  383. rnge:=vle*2
  384. ELSE
  385. rnge:=vle
  386. ENDIF
  387. ENDIF
  388. pos:=pos+6
  389. cnt:=0
  390. WHILE cnt<rnge
  391. pcnt:=0
  392. WHILE (vle:=Char(tmp+pos+pcnt))<>10
  393. IF pcnt>=42
  394. WriteF('\nYou have too many characters in Sentence Line: \d / Category: \d\n', cnt+1, ccnt)
  395. Raise(ERR_CHDV)
  396. ENDIF
  397. IF vle<32
  398. WriteF('\nINVALID CHARACTER in Sentence Line: \d\n', cnt+1)
  399. Raise(ERR_CHDV)
  400. ENDIF
  401. INC pcnt
  402. ENDWHILE
  403. IF pcnt=0
  404. WriteF('\nSentence Line: \d / Category: \d is invalid.\n\nN.B: EMPTY Sentence Lines are not allowed - A Sentences Line must contain\n     exactly 42 characters.\n', cnt+1, ccnt)
  405. Raise(ERR_CHDV)
  406. ENDIF
  407. pos:=pos+43
  408. INC cnt
  409. ENDWHILE
  410. IF (vle:=Char(tmp+pos))=42
  411. pos:=pos+2
  412. INC ccnt
  413. ELSE
  414. WriteF('\nThe * END MARKER is missing from Category: \d\n\nIf your * END MARKER is present, Check that you have declared\nthe right number of Sentence Lines.', ccnt)
  415. Raise(ERR_CHDV)
  416. ENDIF
  417. UNTIL pos>=fl
  418. IF ccnt<>23
  419. WriteF('\nYou have \d Categories - LGUI Text Files MUST have exactly\n22 Categories in them.\n', ccnt-1)
  420. Raise(ERR_CHDV)
  421. ENDIF
  422. ELSE
  423. WriteF('\nERROR: \s was only Partly Read.\n', flname)
  424. Raise(ERR_CHDV)
  425. ENDIF
  426. ELSE
  427. WriteF('\nERROR: \s was Not Opened.\n', flname)
  428. Raise(ERR_CHDV)
  429. ENDIF
  430. ELSEIF ((fl>=0) AND (fl<2068))
  431. WriteF('\nERROR: \s was Too Small.\n', flname)
  432. Raise(ERR_CHDV)
  433. ELSE
  434. WriteF('\nERROR: \s was Not Found.\n', flname)
  435. Raise(ERR_CHDV)
  436. ENDIF
  437. IF chr THEN DisposeLink(chr)
  438. IF nsw THEN DisposeLink(nsw)
  439. IF flname THEN DisposeLink(flname)
  440. WriteF('\n....Checking Finished.\n')
  441. ENDPROC
  442.  
  443. PROC checkTitles()
  444. DEF pos=0:PTR TO CHAR, fh, nl:PTR TO INT, fl, tmp=0:PTR TO CHAR,
  445.     flname:PTR TO CHAR, ccnt=1:PTR TO CHAR
  446. flname:=String(100)
  447. StrCopy(flname, '                                                                                                    ', ALL)
  448. StrCopy(flname, aslBuf, ALL)
  449. StrAdd(flname, 'Titles.Lgui', ALL)
  450. WriteF('\n*** TITLES FILE - \s ***\n\n', flname)
  451. fl:=FileLength(flname)
  452. IF fl=1276
  453. tmp:=NewM(fl, MEMF_PUBLIC OR MEMF_CLEAR)
  454. IF fh:=Open(flname, MODE_OLDFILE)
  455. nl:=Read(fh, tmp, fl)
  456. Close(fh)
  457. IF nl=fl
  458. REPEAT
  459. WriteF('\nChecking Title: \d\n', ccnt)
  460. FOR z:=0 TO 27
  461. IF Char(tmp+pos+z)<32
  462. WriteF('\nTitle \d - Character \d is Invalid.\n', ccnt, z)
  463. Raise(ERR_CHDV)
  464. ENDIF
  465. ENDFOR
  466. pos:=pos+28
  467. IF Char(tmp+pos)<>10
  468. WriteF('\nTitle \d - The RETURN/ENTER Character is missing, from the end of the line.\n', ccnt)
  469. Raise(ERR_CHDV)
  470. ENDIF
  471. INC ccnt
  472. INC pos
  473. UNTIL pos>=fl
  474. IF ccnt<>45
  475. WriteF('\nYou have \d Titles - The LGUI Titles File MUST have exactly\n44 Titles in it.\n', ccnt-1)
  476. Raise(ERR_CHDV)
  477. ENDIF
  478. ELSE
  479. WriteF('\nERROR: \s was only Partly Read.\n', flname)
  480. Raise(ERR_CHDV)
  481. ENDIF
  482. ELSE
  483. WriteF('\nERROR: \s was Not Opened.\n', flname)
  484. Raise(ERR_CHDV)
  485. ENDIF
  486. ELSEIF ((fl>=0) AND (fl<1276))
  487. WriteF('\nERROR: \s was Too Small.\n', flname)
  488. Raise(ERR_CHDV)
  489. ELSEIF fl>1276
  490. WriteF('\nERROR: \s was Too Large.\n', flname)
  491. Raise(ERR_CHDV)
  492. ELSE
  493. WriteF('\nERROR: \s was Not Found.\n', flname)
  494. Raise(ERR_CHDV)
  495. ENDIF
  496. IF flname THEN DisposeLink(flname)
  497. WriteF('\n....Checking Finished.\n')
  498. ENDPROC
  499.